home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 242 / Issue 242 - April 2008 - DPCS0408DVD.ISO / Software Money Savers / VirtualDub / Source / VirtualDub-1.7.7-src.7z / src / Riza / h / displaydrv.h < prev    next >
Encoding:
C/C++ Source or Header  |  2007-08-17  |  3.7 KB  |  126 lines

  1. //    VirtualDub - Video processing and capture application
  2. //    A/V interface library
  3. //    Copyright (C) 1998-2005 Avery Lee
  4. //
  5. //    This program is free software; you can redistribute it and/or modify
  6. //    it under the terms of the GNU General Public License as published by
  7. //    the Free Software Foundation; either version 2 of the License, or
  8. //    (at your option) any later version.
  9. //
  10. //    This program is distributed in the hope that it will be useful,
  11. //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. //    GNU General Public License for more details.
  14. //
  15. //    You should have received a copy of the GNU General Public License
  16. //    along with this program; if not, write to the Free Software
  17. //    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18.  
  19. #ifndef f_VD2_RIZA_DISPLAYDRV_H
  20. #define f_VD2_RIZA_DISPLAYDRV_H
  21.  
  22. #include <windows.h>
  23. #include <vd2/system/vectors.h>
  24. #include <vd2/Kasumi/pixmap.h>
  25.  
  26. class VDStringA;
  27.  
  28. class IVDVideoDisplayMinidriverCallback {
  29. public:
  30.     virtual void ReleaseActiveFrame() = 0;
  31.     virtual void RequestNextFrame() = 0;
  32. };
  33.  
  34. struct VDVideoDisplaySourceInfo {
  35.     VDPixmap    pixmap;
  36.     int            bpp;
  37.     int            bpr;
  38.     void        *pSharedObject;
  39.     ptrdiff_t    sharedOffset;
  40.     bool        bAllowConversion;
  41.     bool        bPersistent;
  42.     bool        bInterlaced;
  43.     IVDVideoDisplayMinidriverCallback *mpCB;
  44. };
  45.  
  46. class VDINTERFACE IVDVideoDisplayMinidriver {
  47. public:
  48.     enum UpdateMode {
  49.         kModeNone        = 0x00000000,
  50.         kModeEvenField    = 0x00000001,
  51.         kModeOddField    = 0x00000002,
  52.         kModeAllFields    = 0x00000003,
  53.         kModeFieldMask    = 0x00000003,
  54.         kModeVSync        = 0x00000004,
  55.         kModeFirstField    = 0x00000008,
  56.         kModeAll        = 0x0000000f
  57.     };
  58.  
  59.     enum FilterMode {
  60.         kFilterAnySuitable,
  61.         kFilterPoint,
  62.         kFilterBilinear,
  63.         kFilterBicubic,
  64.         kFilterModeCount
  65.     };
  66.  
  67.     virtual ~IVDVideoDisplayMinidriver() {}
  68.  
  69.     virtual bool Init(HWND hwnd, const VDVideoDisplaySourceInfo& info) = 0;
  70.     virtual void Shutdown() = 0;
  71.  
  72.     virtual bool ModifySource(const VDVideoDisplaySourceInfo& info) = 0;
  73.  
  74.     virtual bool IsValid() = 0;
  75.     virtual bool IsFramePending() = 0;
  76.     virtual void SetFilterMode(FilterMode mode) = 0;
  77.     virtual void SetFullScreen(bool fullscreen) = 0;
  78.     virtual void SetDisplayDebugInfo(bool enable) = 0;
  79.     virtual void SetColorOverride(uint32 color) = 0;
  80.  
  81.     virtual bool Tick(int id) = 0;
  82.     virtual void Poll() = 0;
  83.     virtual bool Resize() = 0;
  84.     virtual bool Update(UpdateMode) = 0;
  85.     virtual void Refresh(UpdateMode) = 0;
  86.     virtual bool Paint(HDC hdc, const RECT& rClient, UpdateMode lastUpdateMode) = 0;
  87.  
  88.     virtual bool SetSubrect(const vdrect32 *r) = 0;
  89.     virtual void SetLogicalPalette(const uint8 *pLogicalPalette) = 0;
  90.  
  91.     virtual float GetSyncDelta() const = 0;
  92. };
  93.  
  94. class VDINTERFACE VDVideoDisplayMinidriver : public IVDVideoDisplayMinidriver {
  95. public:
  96.     VDVideoDisplayMinidriver();
  97.  
  98.     virtual bool IsFramePending();
  99.     virtual void SetFilterMode(FilterMode mode);
  100.     virtual void SetFullScreen(bool fullscreen);
  101.     virtual void SetDisplayDebugInfo(bool enable);
  102.     virtual void SetColorOverride(uint32 color);
  103.  
  104.     virtual bool Tick(int id);
  105.     virtual void Poll();
  106.     virtual bool Resize();
  107.  
  108.     virtual bool SetSubrect(const vdrect32 *r);
  109.     virtual void SetLogicalPalette(const uint8 *pLogicalPalette);
  110.  
  111.     virtual float GetSyncDelta() const;
  112.  
  113. protected:
  114.     static void GetFormatString(const VDVideoDisplaySourceInfo& info, VDStringA& s);
  115.  
  116.     bool    mbDisplayDebugInfo;
  117.     uint32    mColorOverride;
  118. };
  119.  
  120. IVDVideoDisplayMinidriver *VDCreateVideoDisplayMinidriverOpenGL();
  121. IVDVideoDisplayMinidriver *VDCreateVideoDisplayMinidriverDirectDraw(bool enableOverlays);
  122. IVDVideoDisplayMinidriver *VDCreateVideoDisplayMinidriverGDI();
  123. IVDVideoDisplayMinidriver *VDCreateVideoDisplayMinidriverDX9();
  124.  
  125. #endif
  126.